#include <iostream>

using namespace std;

class A{
    public:
    A(int ii):i(ii) {cout << "father::A()" << endl;}
    ~A() {cout << "fatherA::~A()" << endl;};
    void print() { cout << "A::print()" << i << endl; }
    //protected:
    void print(int i) {cout << i << endl; print();}

    void set(int ii) { i = ii; }
    private:
    int i;


};

class B :public A {
    public:
    B() : A(15) {cout << "son::A()" << endl;}
    ~B() {cout << "son::~A()" << endl;}
    void print() {cout << "B::print()" << endl;} //print 和A里面的print一样，导致A里面的被屏蔽了
    void f() {set(20); 
        // i = 30; 
        print(); } // i父类的子类不能访问

}; // B变成A的子类

int main() {
    B b;
    //b.set(10); // main 里面不能使用protected
    b.print();
    b.f();
    b.A::print(200);// 
    return 0;
}
// father::A()->先把里面的弄好，在A
// son::A()
// A::f()15
// A::f()20
// son::~A()
// fatherA::~A()